iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
0
AI & Data

作者超囉嗦,但一天只要十分鐘的MYSQL真.新手教學系列 第 25

第二十五日-MYSQL常用字串函數:用分隔符取字串、字串合併

  • 分享至 

  • xImage
  •  

延續昨日的常用字串函數介紹,
今天要介紹的是用分隔符取字串和字串合併,
前者常會用來取特定資料,
後者則常會用來組成語法,
下面會舉一些例子。

  • SUBSTRING_INDEX(字串,分隔符,出現次數)

分隔符取字串簡單來說,
就像是我們平常寫日記,可能內文開頭寫一大串:
「今天天氣很好,太陽出來了,風兒輕輕吹」,
我們想根據逗號擷取每句話,分隔符就會填寫「,」,
SUBSTRING_INDEX會抓取分隔符號之前的所有字串。

  1. 出現次數是正數的時候

找到第1個分隔符(逗號)的左邊所有文字

SELECT SUBSTRING_INDEX('今天天氣很好,太陽出來了,風兒輕輕吹',',',1);
今天天氣晴
  1. 出現次數是負數的時候

會從右邊數回來,-1就是尾巴數回來第一個,
所以會回傳尾巴數回來第1個分隔符(逗號),在右邊的內容。
我的記法是:從右邊看回來所以回傳右邊的內容。

SELECT SUBSTRING_INDEX('今天天氣很好,太陽出來了,風兒輕輕吹',',',--1);
風兒輕輕吹
  1. 取出中間字串

既然這語法只能取分隔符左邊或是分隔符右邊的內容,要如何取中間的文字呢?
我們可以組和語法,取出中間字串,
假設我們字串是:「第一句話,第二句話,第三句話」,
那我們可以先取第2個逗號的左邊:「第一句話,第二句話」,
再取出右邊數來第一個逗號的右邊:「第二句話」。
寫成sql的話:

SELECT SUBSTRING_INDEX('今天天氣很好,太陽出來了,風兒輕輕吹',',',2);
今天天氣晴,太陽出來了
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('今天天氣很好,太陽出來了,風兒輕輕吹',',',2),',',-1);
太陽出來了
  • 合併字串

  1. CONCAT(字串1,字串2)

CONCAT可以把字串直接黏起來。

SELECT CONCAT('今天天氣很好','太陽出來了','風兒輕輕吹');
今天天氣很好太陽出來了風兒輕輕吹
  1. CONCAT_WS(分隔符,字串1,字串2)

CONCAT_WS可以在字串跟字串中間插入分隔符。

SELECT CONCAT_WS(',','今天天氣很好','太陽出來了','風兒輕輕吹');
今天天氣很好,太陽出來了,風兒輕輕吹

上一篇
第二十四日-MYSQL常用字串函數:取字串長度、取部分字串
下一篇
第二十六日-MYSQL聚合函數:GROUP BY搭配HAVING
系列文
作者超囉嗦,但一天只要十分鐘的MYSQL真.新手教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
jason20200911
iT邦新手 5 級 ‧ 2020-12-23 18:45:54

大大您好

SELECT SUBSTRING_INDEX('今天天氣很好,太陽出來了,風兒輕輕吹',',',--1);

最後一個參數的地方應該多一個負號

我要留言

立即登入留言